package com.Day7;

/**
 * Copyright (C), 2018-2021, 若若叶
 * Author: Hx162
 * Date: 2021/7/14 10:59
 * FileName: StringMethod
 * Description: 一些必备的String的方法
 */

/**
 * 挑选一些，有些方法可以用不同类型的参数
 * 参考对于版本的API帮助文档
 */
public class StringMethod {

    public static void main(String[] args) {
        String string1 = "AbDcTa";
        String string2 = "AbDcTA";
        String string3 = "abdcta";
        String string4 = "";
        String string5 = null;
        String string6 = "asd-asd-asd";
        String string7 = "   as  d  ";

        //length()
        //返回此字符串的长度。
        System.out.println(string1.length());  // 6

        //charAt(int index)
        //返回指定索引处的 char 值。
        System.out.println(string1.charAt(2));  // D

        //compareTo(String anotherString)
        // 按字典顺序比较两个字符串
        //string1转换成数字的值减去string2转换成数字的值。
        // 结果为0  表示两个字符串一样。
        System.out.println(string1.compareTo(string2));  //32

        //当且仅当此字符串包含指定的 char 值序列时，返回 true。
        //string1是否含有括号里面的字符串。
        System.out.println(string1.contains("b"));  // true

        //endsWith(String suffix)
        //测试此字符串是否以指定的后缀结束。
        System.out.println(string1.endsWith("Ta"));  // true

        //equalsIgnoreCase(String anotherString)
        //将此 String 与另一个 String 比较，不考虑大小写。
        System.out.println(string1.equalsIgnoreCase(string3));  // true

        //isEmpty()
        //当且仅当 length() 为 0 时返回 true。
        System.out.println(string1.isEmpty());  // false
        System.out.println(string4.isEmpty());  // true
        //System.out.println(string5.isEmpty());  // java.lang.NullPointerException  空指针异常

        //lastIndexOf(String str)
        //返回指定子字符串在此字符串中最右边出现处的索引。
        System.out.println(string1.lastIndexOf("a"));  // 5

        //replace(CharSequence target, CharSequence replacement)
        //使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
        System.out.println(string1.replace("A","S"));  // SbDcTa  注意：原字符串没变。 字符串一经创建不会更改，只会指向新的字符串

        //split(String regex)
        //根据给定正则表达式的匹配拆分此字符串。
        String[] splitStr = string6.split("-");
        for (int i = 0; i < splitStr.length; i++) {
            System.out.println(splitStr[i]);
        }

        //startsWith(String prefix, int toffset)
        //测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
        System.out.println(string1.startsWith("S"));  // false

        //substring(int beginIndex)
        //返回一个新的字符串，它是此字符串的一个子字符串。
        System.out.println(string1.substring(3));  // cTa
        System.out.println(string1.substring(3,4));  // c  左闭右开

        //toCharArray()
        //将此字符串转换为一个新的字符数组。
        char[] ch = string1.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.println(ch[i]);
        }

        //toLowerCase()
        //使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
        System.out.println(string1.toLowerCase());  // abdcta

        //toUpperCase()
        //使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
        System.out.println(string1.toUpperCase());  // ABDCTA

        //trim()
        //返回字符串的副本，忽略前导空白和尾部空白。
        System.out.println(string7.trim());  // as  d

        //valueOf(int i)
        //返回 boolean 参数的字符串表示形式。
        System.out.println(String.valueOf(99));

    }
}
